/**
 * \file suggestion.h
 * \brief Suggestion des cases ou la creation d'une ville serait la plus judicieuse
 * \author ARTUR Vincent
 * \author LAPERDRIX Pierre
 * \version 1.0
 */

#ifdef WANTDLLEXP
#define DLL _declspec(dllexport)
#define EXTERNC extern "C"
#else
#define DLL
#define EXTERNC
#endif


#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <iostream>

/**
 * \class Suggestion
 * \brief Suggestion des cases ou la creation d'une ville serait la plus judicieuse
 */
class DLL Suggestion{

public:

	/**
	 * \fn Suggestion()
	 * \brief Constructeur de Suggestion
	 */
	Suggestion();

	/**
	 * \fn ~Suggestion()
	 * \brief Destructeur de Suggestion
	 */
	~Suggestion();

	/**
	 * \fn int** suggerer(int** cases,int** ennemis,int** villes,int taille)
	 * \brief Algorithme de suggestion de cases pour la creation d'une ville
	 * \param cases la matrice de cases de la carte
	 * \param ennemis la matrice contenant les positions des unites ennemies sur la carte
	 * \param taille la taille de la carte
	 * \return une matrice indiquant les cases selectionnnes par l'algorithme
	 */
	int** suggerer(int** cases,int** ennemis,int** villes,int taille);

};

/**
 * \fn Suggestuion* Suggestion_new()
 * \brief Methode utilisee par la DLL pour creer un nouvel objet de type Suggestion
 * \return un pointeur sur un nouvel objet de type Suggestion
 */
EXTERNC DLL Suggestion* Suggestion_new();

/**
 * \fn void Suggestion_delete(Suggestion* sugg)
 * \brief Methode utilisee par la DLL pour detruire un objet de type Suggestion
 * \param sugg un pointeur sur l'objet a detruire
 */
EXTERNC DLL void Suggestion_delete(Suggestion* sugg);

/**
 * \fn void int** Suggestion_suggerer(Suggestion* sugg,int** cases,int** ennemis,int** villes,int taille)
 * \brief Methode utilisee par la DLL pour exexuter l'algorithme de suggestion
 * \param cases la matrice de cases de la carte
 * \param ennemis la matrice contenant les positions des unites ennemies sur la carte
 * \param taille la taille de la carte
 * \return une matrice indiquant les cases selectionnnes par l'algorithme
 */
EXTERNC DLL int** Suggestion_suggerer(Suggestion* sugg,int** cases,int** ennemis,int** villes,int taille);